/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sopra09.lv6659438.logik.autorenBearbeiten;

import java.util.List;
import javax.annotation.Resource;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import sopra09.lv6659438.logik.awfUnabhaengigeKomponenten.LoggingInterceptor;
import sopra09.lv6659438.objekte.Autor;
import sopra09.lv6659438.objekte.Buch;

/**
 * Liefert eine Liste aller Systemautoren. Liefert ein neues Autorobjekt mit den
 * übergebenen Attributwerten.
 * @author TJ
 */
@Stateless
@Interceptors(LoggingInterceptor.class)
public class AutorenBearbeitenALBean implements AutorenBearbeitenALLocal {
    @PersistenceContext EntityManager em;
    @Resource SessionContext ctx;

    /**
     * Liefert eine Liste aller Systemautoren
     * @return Liste aller Systemautoren
     */
   public List<Autor> liefereAutorenliste() {
        Query q = em.createNamedQuery("liefereAutorenliste");
        List<Autor> autorenliste = q.getResultList();

        return autorenliste;
    }

   /**
    *
    * @param nachname
    * @param vorname
    * @param geburtsjahr
    * @param buch
    * @return einen neuen Autor mit den übergebenen Attributwerten.
    */
    public Autor liefereNeuenAutor(String nachname, String vorname, int geburtsjahr, Buch buch) {
       Autor autor = new Autor();
       String nameUndJahr;
       String name;

        String firstname = vorname;
        String lastname = nachname;
        String yearOfBirth = Integer.toString(geburtsjahr);

        // erzeugen der zusammengesetzten attribute
        nameUndJahr = lastname.trim() + "_" + firstname.trim() + "_" + yearOfBirth.trim();
        name = lastname.trim() + " " + firstname.trim();

        // zuweisen der attributwerte
        autor.setName(name);
        autor.setVorname(vorname);
        autor.setNachname(nachname);
        autor.setGeburtsjahr(geburtsjahr);        
        autor.setNameUndJahr(nameUndJahr);
        autor.addBuch(buch);
        return autor;
    }

    // nicht benötigte methoden
/*
    public void persist(Object object) {
        em.persist(object);
    }

     public boolean entferneAutoren(Set<Autor> autoren) {
        return false;
    }

    public boolean erfasseNeuenAutor(String nachname, String vorname, int geburtsjahr, Buch buch) {
        return false;
    }
*/
    
}
